{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "89b89f64d8f8053d",
   "metadata": {
    "collapsed": false,
    "id": "89b89f64d8f8053d",
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "source": [
    "# 单卡GPU 进行 ChatGLM3-6B模型 LORA 高效微调\n",
    "本 Cookbook 将带领开发者使用 `AdvertiseGen` 对 ChatGLM3-6B 数据集进行 lora微调，使其具备专业的广告生成能力。\n",
    "\n",
    "## 硬件需求\n",
    "显存：24GB及以上（推荐使用30系或A10等sm80架构以上的NVIDIA显卡进行尝试）\n",
    "内存：16GB\n",
    "RAM: 2.9 /16 GB\n",
    "GPU RAM: 15.5/16.0 GB"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a7bd9a514ed09ea6",
   "metadata": {
    "collapsed": false,
    "id": "a7bd9a514ed09ea6",
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "source": [
    "## 0. 环境检查\n",
    "首先，先检查代码的运行地址，确保运行地址处于 `finetune_demo` 中。\n",
    "并且，确保已经安装了 `requirements.txt`中的依赖。\n",
    "\n",
    "> 本 demo 中，不需要使用 deepspeed, mpi4py 两个依赖，如果您安装这两个依赖遇到问题，可以不安装这两个依赖。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "f7703109d1443346",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-14T05:29:22.200365Z",
     "start_time": "2024-04-14T05:29:22.080929Z"
    },
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/home/code/ChatGLM3/finetune_demo\n"
     ]
    }
   ],
   "source": [
    "!pwd"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f50e92810011977",
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "source": [
    "## 1. 准备数据集\n",
    "我们使用 AdvertiseGen 数据集来进行微调。从 [Google Drive](https://drive.google.com/file/d/13_vf0xRTQsyneRKdD1bZIr93vBGOczrk/view?usp=sharing) 或者 [Tsinghua Cloud](https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl=1) 下载处理好的 AdvertiseGen 数据集，将解压后的 AdvertiseGen 目录放到本目录的 `/data/` 下, 例如。\n",
    "> /media/zr/Data/Code/ChatGLM3/finetune_demo/data/AdvertiseGen"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "initial_id",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-14T05:29:23.809255Z",
     "start_time": "2024-04-14T05:29:22.202731Z"
    },
    "cellView": "form",
    "id": "initial_id"
   },
   "outputs": [],
   "source": [
    "import json\n",
    "from typing import Union\n",
    "from pathlib import Path\n",
    "\n",
    "\n",
    "def _resolve_path(path: Union[str, Path]) -> Path:\n",
    "    return Path(path).expanduser().resolve()\n",
    "\n",
    "\n",
    "def _mkdir(dir_name: Union[str, Path]):\n",
    "    dir_name = _resolve_path(dir_name)\n",
    "    if not dir_name.is_dir():\n",
    "        dir_name.mkdir(parents=True, exist_ok=False)\n",
    "\n",
    "\n",
    "def convert_adgen(data_dir: Union[str, Path], save_dir: Union[str, Path]):\n",
    "    def _convert(in_file: Path, out_file: Path):\n",
    "        _mkdir(out_file.parent)\n",
    "        with open(in_file, encoding='utf-8') as fin:\n",
    "            with open(out_file, 'wt', encoding='utf-8') as fout:\n",
    "                for line in fin:\n",
    "                    dct = json.loads(line)\n",
    "                    sample = {'conversations': [{'role': 'user', 'content': dct['content']},\n",
    "                                                {'role': 'assistant', 'content': dct['summary']}]}\n",
    "                    fout.write(json.dumps(sample, ensure_ascii=False) + '\\n')\n",
    "\n",
    "    data_dir = _resolve_path(data_dir)\n",
    "    save_dir = _resolve_path(save_dir)\n",
    "\n",
    "    train_file = data_dir / 'train.json'\n",
    "    if train_file.is_file():\n",
    "        out_file = save_dir / train_file.relative_to(data_dir)\n",
    "        _convert(train_file, out_file)\n",
    "\n",
    "    dev_file = data_dir / 'dev.json'\n",
    "    if dev_file.is_file():\n",
    "        out_file = save_dir / dev_file.relative_to(data_dir)\n",
    "        _convert(dev_file, out_file)\n",
    "\n",
    "\n",
    "convert_adgen('data/AdvertiseGen', 'data/AdvertiseGen_fix')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a1b7a99923349056",
   "metadata": {
    "collapsed": false,
    "id": "a1b7a99923349056",
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "source": [
    "## 2. 使用命令行开始微调,我们使用 lora 进行微调\n",
    "接着，我们仅需要将配置好的参数以命令行的形式传参给程序，就可以使用命令行进行高效微调。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "17c87410a24d844f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-14T06:23:41.282431Z",
     "start_time": "2024-04-14T05:29:23.810692Z"
    },
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "17c87410a24d844f",
    "outputId": "e347fc7d-875e-40c9-c682-3e064100476b"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Setting eos_token is not supported, use the default one.\n",
      "Setting pad_token is not supported, use the default one.\n",
      "Setting unk_token is not supported, use the default one.\n",
      "Loading checkpoint shards: 100%|██████████████████| 7/7 [00:59<00:00,  8.45s/it]\n",
      "trainable params: 1,949,696 || all params: 6,245,533,696 || trainable%: 0.031217444255383614\n",
      "--> Model\n",
      "\n",
      "--> model has 1.949696M params\n",
      "\n",
      "Setting num_proc from 16 back to 1 for the train split to disable multiprocessing as it only contains one shard.\n",
      "Generating train split: 114599 examples [00:00, 577807.51 examples/s]\n",
      "Setting num_proc from 16 back to 1 for the validation split to disable multiprocessing as it only contains one shard.\n",
      "Generating validation split: 1070 examples [00:00, 313554.48 examples/s]\n",
      "Setting num_proc from 16 back to 1 for the test split to disable multiprocessing as it only contains one shard.\n",
      "Generating test split: 1070 examples [00:00, 386821.69 examples/s]\n",
      "Map (num_proc=16): 100%|██████| 114599/114599 [00:04<00:00, 23615.65 examples/s]\n",
      "train_dataset: Dataset({\n",
      "    features: ['input_ids', 'labels'],\n",
      "    num_rows: 114599\n",
      "})\n",
      "Map (num_proc=16): 100%|███████████| 1070/1070 [00:00<00:00, 1593.47 examples/s]\n",
      "val_dataset: Dataset({\n",
      "    features: ['input_ids', 'output_ids'],\n",
      "    num_rows: 1070\n",
      "})\n",
      "Map (num_proc=16): 100%|███████████| 1070/1070 [00:00<00:00, 1541.83 examples/s]\n",
      "test_dataset: Dataset({\n",
      "    features: ['input_ids', 'output_ids'],\n",
      "    num_rows: 1070\n",
      "})\n",
      "--> Sanity check\n",
      "           '[gMASK]': 64790 -> -100\n",
      "               'sop': 64792 -> -100\n",
      "          '<|user|>': 64795 -> -100\n",
      "                  '': 30910 -> -100\n",
      "                '\\n': 13 -> -100\n",
      "                  '': 30910 -> -100\n",
      "                '类型': 33467 -> -100\n",
      "                 '#': 31010 -> -100\n",
      "                 '裤': 56532 -> -100\n",
      "                 '*': 30998 -> -100\n",
      "                 '版': 55090 -> -100\n",
      "                 '型': 54888 -> -100\n",
      "                 '#': 31010 -> -100\n",
      "                '宽松': 40833 -> -100\n",
      "                 '*': 30998 -> -100\n",
      "                '风格': 32799 -> -100\n",
      "                 '#': 31010 -> -100\n",
      "                '性感': 40589 -> -100\n",
      "                 '*': 30998 -> -100\n",
      "                '图案': 37505 -> -100\n",
      "                 '#': 31010 -> -100\n",
      "                '线条': 37216 -> -100\n",
      "                 '*': 30998 -> -100\n",
      "                 '裤': 56532 -> -100\n",
      "                 '型': 54888 -> -100\n",
      "                 '#': 31010 -> -100\n",
      "                 '阔': 56529 -> -100\n",
      "                 '腿': 56158 -> -100\n",
      "                 '裤': 56532 -> -100\n",
      "     '<|assistant|>': 64796 -> -100\n",
      "                  '': 30910 -> 30910\n",
      "                '\\n': 13 -> 13\n",
      "                  '': 30910 -> 30910\n",
      "                '宽松': 40833 -> 40833\n",
      "                 '的': 54530 -> 54530\n",
      "                 '阔': 56529 -> 56529\n",
      "                 '腿': 56158 -> 56158\n",
      "                 '裤': 56532 -> 56532\n",
      "                 '这': 54551 -> 54551\n",
      "                '两年': 33808 -> 33808\n",
      "                '真的': 32041 -> 32041\n",
      "                 '吸': 55360 -> 55360\n",
      "                 '粉': 55486 -> 55486\n",
      "                '不少': 32138 -> 32138\n",
      "                 '，': 31123 -> 31123\n",
      "                '明星': 32943 -> 32943\n",
      "                '时尚': 33481 -> 33481\n",
      "                 '达': 54880 -> 54880\n",
      "                '人的': 31664 -> 31664\n",
      "                '心头': 46565 -> 46565\n",
      "                 '爱': 54799 -> 54799\n",
      "                 '。': 31155 -> 31155\n",
      "                '毕竟': 33051 -> 33051\n",
      "                 '好': 54591 -> 54591\n",
      "                 '穿': 55432 -> 55432\n",
      "                '时尚': 33481 -> 33481\n",
      "                 '，': 31123 -> 31123\n",
      "                 '谁': 55622 -> 55622\n",
      "                '都能': 32904 -> 32904\n",
      "                 '穿': 55432 -> 55432\n",
      "                 '出': 54557 -> 54557\n",
      "                 '腿': 56158 -> 56158\n",
      "                 '长': 54625 -> 54625\n",
      "                 '2': 30943 -> 30943\n",
      "                 '米': 55055 -> 55055\n",
      "               '的效果': 35590 -> 35590\n",
      "                '宽松': 40833 -> 40833\n",
      "                 '的': 54530 -> 54530\n",
      "                 '裤': 56532 -> 56532\n",
      "                 '腿': 56158 -> 56158\n",
      "                 '，': 31123 -> 31123\n",
      "               '当然是': 48466 -> 48466\n",
      "                 '遮': 57148 -> 57148\n",
      "                 '肉': 55343 -> 55343\n",
      "                 '小': 54603 -> 54603\n",
      "                '能手': 49355 -> 49355\n",
      "                 '啊': 55674 -> 55674\n",
      "                 '。': 31155 -> 31155\n",
      "                '上身': 51605 -> 51605\n",
      "                 '随': 55119 -> 55119\n",
      "                 '性': 54642 -> 54642\n",
      "                '自然': 31799 -> 31799\n",
      "                 '不': 54535 -> 54535\n",
      "                 '拘': 57036 -> 57036\n",
      "                 '束': 55625 -> 55625\n",
      "                 '，': 31123 -> 31123\n",
      "                '面料': 46839 -> 46839\n",
      "                 '亲': 55113 -> 55113\n",
      "                 '肤': 56089 -> 56089\n",
      "                '舒适': 33894 -> 33894\n",
      "                 '贴': 55778 -> 55778\n",
      "                '身体': 31902 -> 31902\n",
      "                 '验': 55017 -> 55017\n",
      "                 '感': 54706 -> 54706\n",
      "                 '棒': 56382 -> 56382\n",
      "                 '棒': 56382 -> 56382\n",
      "                 '哒': 59230 -> 59230\n",
      "                 '。': 31155 -> 31155\n",
      "                 '系': 54712 -> 54712\n",
      "                 '带': 54882 -> 54882\n",
      "                '部分': 31726 -> 31726\n",
      "                '增加': 31917 -> 31917\n",
      "                '设计': 31735 -> 31735\n",
      "                '看点': 45032 -> 45032\n",
      "                 '，': 31123 -> 31123\n",
      "                 '还': 54656 -> 54656\n",
      "                 '让': 54772 -> 54772\n",
      "                '单品': 46539 -> 46539\n",
      "               '的设计': 34481 -> 34481\n",
      "                 '感': 54706 -> 54706\n",
      "                '更强': 43084 -> 43084\n",
      "                 '。': 31155 -> 31155\n",
      "                '腿部': 46799 -> 46799\n",
      "                '线条': 37216 -> 37216\n",
      "                 '若': 55351 -> 55351\n",
      "                 '隐': 55733 -> 55733\n",
      "                 '若': 55351 -> 55351\n",
      "                 '现': 54600 -> 54600\n",
      "                 '的': 54530 -> 54530\n",
      "                 '，': 31123 -> 31123\n",
      "                '性感': 40589 -> 40589\n",
      "                 '撩': 58521 -> 58521\n",
      "                 '人': 54533 -> 54533\n",
      "                 '。': 31155 -> 31155\n",
      "                '颜色': 33692 -> 33692\n",
      "                 '敲': 57004 -> 57004\n",
      "                '温柔': 34678 -> 34678\n",
      "                 '的': 54530 -> 54530\n",
      "                 '，': 31123 -> 31123\n",
      "                 '与': 54619 -> 54619\n",
      "                '裤子': 44722 -> 44722\n",
      "                '本身': 32754 -> 32754\n",
      "                 '所': 54626 -> 54626\n",
      "                '呈现': 33169 -> 33169\n",
      "               '的风格': 48084 -> 48084\n",
      "                '有点': 33149 -> 33149\n",
      "                 '反': 54955 -> 54955\n",
      "                 '差': 55342 -> 55342\n",
      "                 '萌': 56842 -> 56842\n",
      "                 '。': 31155 -> 31155\n",
      "                  '': 2 -> 2\n",
      "max_steps is given, it will override any value given in num_train_epochs\n",
      "/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/torch/utils/data/dataloader.py:558: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 8, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
      "  warnings.warn(_create_warning_msg(\n",
      "***** Running training *****\n",
      "  Num examples = 114,599\n",
      "  Num Epochs = 1\n",
      "  Instantaneous batch size per device = 4\n",
      "  Total train batch size (w. parallel, distributed & accumulation) = 4\n",
      "  Gradient Accumulation steps = 1\n",
      "  Total optimization steps = 3,000\n",
      "  Number of trainable parameters = 1,949,696\n",
      "{'loss': 4.8289, 'grad_norm': 2.2310962677001953, 'learning_rate': 4.9833333333333336e-05, 'epoch': 0.0}\n",
      "{'loss': 4.5969, 'grad_norm': 3.1992759704589844, 'learning_rate': 4.966666666666667e-05, 'epoch': 0.0}\n",
      "{'loss': 4.4797, 'grad_norm': 3.0358543395996094, 'learning_rate': 4.9500000000000004e-05, 'epoch': 0.0}\n",
      "{'loss': 4.117, 'grad_norm': 3.3994085788726807, 'learning_rate': 4.933333333333334e-05, 'epoch': 0.0}\n",
      "{'loss': 4.1145, 'grad_norm': 2.7350001335144043, 'learning_rate': 4.9166666666666665e-05, 'epoch': 0.0}\n",
      "{'loss': 3.8637, 'grad_norm': 2.965533494949341, 'learning_rate': 4.9e-05, 'epoch': 0.0}\n",
      "{'loss': 3.8389, 'grad_norm': 2.889390468597412, 'learning_rate': 4.883333333333334e-05, 'epoch': 0.0}\n",
      "{'loss': 3.7443, 'grad_norm': 2.911240339279175, 'learning_rate': 4.866666666666667e-05, 'epoch': 0.0}\n",
      "{'loss': 3.6348, 'grad_norm': 3.210419178009033, 'learning_rate': 4.85e-05, 'epoch': 0.0}\n",
      "{'loss': 3.7191, 'grad_norm': 3.3892624378204346, 'learning_rate': 4.8333333333333334e-05, 'epoch': 0.0}\n",
      "{'loss': 3.6695, 'grad_norm': 3.587730646133423, 'learning_rate': 4.8166666666666674e-05, 'epoch': 0.0}\n",
      "{'loss': 3.8457, 'grad_norm': 3.8687636852264404, 'learning_rate': 4.8e-05, 'epoch': 0.0}\n",
      "{'loss': 3.6113, 'grad_norm': 3.476006507873535, 'learning_rate': 4.7833333333333335e-05, 'epoch': 0.0}\n",
      "{'loss': 3.727, 'grad_norm': 4.390471458435059, 'learning_rate': 4.766666666666667e-05, 'epoch': 0.0}\n",
      "{'loss': 3.6832, 'grad_norm': 3.6556315422058105, 'learning_rate': 4.75e-05, 'epoch': 0.01}\n",
      "{'loss': 3.7428, 'grad_norm': 3.903618335723877, 'learning_rate': 4.7333333333333336e-05, 'epoch': 0.01}\n",
      "{'loss': 3.573, 'grad_norm': 4.042313098907471, 'learning_rate': 4.716666666666667e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5738, 'grad_norm': 4.284143924713135, 'learning_rate': 4.7e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5496, 'grad_norm': 4.729433059692383, 'learning_rate': 4.683333333333334e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5771, 'grad_norm': 4.480672359466553, 'learning_rate': 4.666666666666667e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5502, 'grad_norm': 4.8797454833984375, 'learning_rate': 4.6500000000000005e-05, 'epoch': 0.01}\n",
      "{'loss': 3.6432, 'grad_norm': 4.0128045082092285, 'learning_rate': 4.633333333333333e-05, 'epoch': 0.01}\n",
      "{'loss': 3.6088, 'grad_norm': 4.8525004386901855, 'learning_rate': 4.6166666666666666e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5094, 'grad_norm': 4.512479782104492, 'learning_rate': 4.600000000000001e-05, 'epoch': 0.01}\n",
      "{'loss': 3.4746, 'grad_norm': 5.345169544219971, 'learning_rate': 4.5833333333333334e-05, 'epoch': 0.01}\n",
      "{'loss': 3.6025, 'grad_norm': 5.3451762199401855, 'learning_rate': 4.566666666666667e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5494, 'grad_norm': 5.378037929534912, 'learning_rate': 4.55e-05, 'epoch': 0.01}\n",
      "{'loss': 3.6135, 'grad_norm': 4.482054710388184, 'learning_rate': 4.5333333333333335e-05, 'epoch': 0.01}\n",
      "{'loss': 3.6305, 'grad_norm': 4.731616020202637, 'learning_rate': 4.516666666666667e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5393, 'grad_norm': 5.823780536651611, 'learning_rate': 4.5e-05, 'epoch': 0.01}\n",
      "{'loss': 3.4662, 'grad_norm': 5.343590259552002, 'learning_rate': 4.483333333333333e-05, 'epoch': 0.01}\n",
      "{'loss': 3.608, 'grad_norm': 5.747222423553467, 'learning_rate': 4.466666666666667e-05, 'epoch': 0.01}\n",
      "{'loss': 3.418, 'grad_norm': 5.199479579925537, 'learning_rate': 4.4500000000000004e-05, 'epoch': 0.01}\n",
      "{'loss': 3.4916, 'grad_norm': 5.30656099319458, 'learning_rate': 4.433333333333334e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5178, 'grad_norm': 5.485610485076904, 'learning_rate': 4.4166666666666665e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5762, 'grad_norm': 5.19376277923584, 'learning_rate': 4.4000000000000006e-05, 'epoch': 0.01}\n",
      "{'loss': 3.3611, 'grad_norm': 4.863815784454346, 'learning_rate': 4.383333333333334e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5305, 'grad_norm': 5.127675533294678, 'learning_rate': 4.3666666666666666e-05, 'epoch': 0.01}\n",
      "{'loss': 3.5238, 'grad_norm': 5.2029523849487305, 'learning_rate': 4.35e-05, 'epoch': 0.01}\n",
      "{'loss': 3.4729, 'grad_norm': 5.5798797607421875, 'learning_rate': 4.3333333333333334e-05, 'epoch': 0.01}\n",
      "{'loss': 3.6893, 'grad_norm': 5.44585657119751, 'learning_rate': 4.316666666666667e-05, 'epoch': 0.01}\n",
      "{'loss': 3.498, 'grad_norm': 4.951786518096924, 'learning_rate': 4.3e-05, 'epoch': 0.01}\n",
      "{'loss': 3.6264, 'grad_norm': 5.603335380554199, 'learning_rate': 4.2833333333333335e-05, 'epoch': 0.02}\n",
      "{'loss': 3.416, 'grad_norm': 6.643896102905273, 'learning_rate': 4.266666666666667e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4121, 'grad_norm': 6.06505012512207, 'learning_rate': 4.25e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4275, 'grad_norm': 5.5635666847229, 'learning_rate': 4.233333333333334e-05, 'epoch': 0.02}\n",
      "{'loss': 3.5326, 'grad_norm': 5.660332202911377, 'learning_rate': 4.216666666666667e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4482, 'grad_norm': 7.024213790893555, 'learning_rate': 4.2e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4588, 'grad_norm': 5.748382568359375, 'learning_rate': 4.183333333333334e-05, 'epoch': 0.02}\n",
      "{'loss': 3.56, 'grad_norm': 5.9419660568237305, 'learning_rate': 4.166666666666667e-05, 'epoch': 0.02}\n",
      " 17%|██████▋                                 | 500/3000 [04:37<26:21,  1.58it/s]***** Running Evaluation *****\n",
      "  Num examples = 50\n",
      "  Batch size = 16\n",
      "\n",
      "  0%|                                                     | 0/4 [00:00<?, ?it/s]\u001b[A\n",
      " 50%|██████████████████████▌                      | 2/4 [00:21<00:21, 10.55s/it]\u001b[A\n",
      " 75%|█████████████████████████████████▊           | 3/4 [00:41<00:14, 14.76s/it]\u001b[A\n",
      "100%|█████████████████████████████████████████████| 4/4 [01:00<00:00, 16.12s/it]\u001b[ABuilding prefix dict from the default dictionary ...\n",
      "Dumping model to file cache /tmp/jieba.cache\n",
      "Loading model cost 0.562 seconds.\n",
      "Prefix dict has been built successfully.\n",
      "                                                                                \n",
      "\u001b[A{'eval_rouge-1': 31.57444, 'eval_rouge-2': 7.270602, 'eval_rouge-l': 24.162572, 'eval_bleu-4': 0.031323545946986685, 'eval_runtime': 64.8659, 'eval_samples_per_second': 0.771, 'eval_steps_per_second': 0.062, 'epoch': 0.02}\n",
      " 17%|██████▋                                 | 500/3000 [05:42<26:21,  1.58it/s]\n",
      "100%|█████████████████████████████████████████████| 4/4 [01:00<00:00, 16.12s/it]\u001b[A\n",
      "                                                                                \u001b[ASaving model checkpoint to ./output/checkpoint-500\n",
      "/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/peft/utils/save_and_load.py:154: UserWarning: Could not find a config file in /home/THUDM/chatglm3-6b/chatglm3-6b - will assume that the vocabulary was not modified.\n",
      "  warnings.warn(\n",
      "{'loss': 3.3236, 'grad_norm': 5.6337432861328125, 'learning_rate': 4.15e-05, 'epoch': 0.02}\n",
      "{'loss': 3.5461, 'grad_norm': 6.6446990966796875, 'learning_rate': 4.133333333333333e-05, 'epoch': 0.02}\n",
      "{'loss': 3.5814, 'grad_norm': 5.970566272735596, 'learning_rate': 4.116666666666667e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4881, 'grad_norm': 5.39901876449585, 'learning_rate': 4.1e-05, 'epoch': 0.02}\n",
      "{'loss': 3.5271, 'grad_norm': 5.3415207862854, 'learning_rate': 4.0833333333333334e-05, 'epoch': 0.02}\n",
      "{'loss': 3.6445, 'grad_norm': 5.706560134887695, 'learning_rate': 4.066666666666667e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4904, 'grad_norm': 5.825843334197998, 'learning_rate': 4.05e-05, 'epoch': 0.02}\n",
      "{'loss': 3.3705, 'grad_norm': 5.497605800628662, 'learning_rate': 4.0333333333333336e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4234, 'grad_norm': 6.254047870635986, 'learning_rate': 4.016666666666667e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4883, 'grad_norm': 6.427310943603516, 'learning_rate': 4e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4391, 'grad_norm': 6.152324199676514, 'learning_rate': 3.983333333333333e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4568, 'grad_norm': 6.6391921043396, 'learning_rate': 3.966666666666667e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4473, 'grad_norm': 5.908803462982178, 'learning_rate': 3.9500000000000005e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4576, 'grad_norm': 6.250619888305664, 'learning_rate': 3.933333333333333e-05, 'epoch': 0.02}\n",
      "{'loss': 3.5344, 'grad_norm': 5.901449203491211, 'learning_rate': 3.9166666666666665e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4846, 'grad_norm': 6.357374668121338, 'learning_rate': 3.9000000000000006e-05, 'epoch': 0.02}\n",
      "{'loss': 3.5416, 'grad_norm': 6.0439677238464355, 'learning_rate': 3.883333333333333e-05, 'epoch': 0.02}\n",
      "{'loss': 3.3002, 'grad_norm': 7.023437976837158, 'learning_rate': 3.866666666666667e-05, 'epoch': 0.02}\n",
      "{'loss': 3.3971, 'grad_norm': 6.648576259613037, 'learning_rate': 3.85e-05, 'epoch': 0.02}\n",
      "{'loss': 3.3541, 'grad_norm': 6.217583656311035, 'learning_rate': 3.8333333333333334e-05, 'epoch': 0.02}\n",
      "{'loss': 3.4994, 'grad_norm': 6.963993549346924, 'learning_rate': 3.816666666666667e-05, 'epoch': 0.02}\n",
      "{'loss': 3.5279, 'grad_norm': 6.710816860198975, 'learning_rate': 3.8e-05, 'epoch': 0.03}\n",
      "{'loss': 3.2447, 'grad_norm': 6.915932655334473, 'learning_rate': 3.7833333333333336e-05, 'epoch': 0.03}\n",
      "{'loss': 3.5711, 'grad_norm': 5.77187967300415, 'learning_rate': 3.766666666666667e-05, 'epoch': 0.03}\n",
      "{'loss': 3.3979, 'grad_norm': 6.479312896728516, 'learning_rate': 3.7500000000000003e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4805, 'grad_norm': 6.064805507659912, 'learning_rate': 3.733333333333334e-05, 'epoch': 0.03}\n",
      "{'loss': 3.6189, 'grad_norm': 6.40315055847168, 'learning_rate': 3.7166666666666664e-05, 'epoch': 0.03}\n",
      "{'loss': 3.476, 'grad_norm': 6.286288738250732, 'learning_rate': 3.7e-05, 'epoch': 0.03}\n",
      "{'loss': 3.3209, 'grad_norm': 6.470063209533691, 'learning_rate': 3.683333333333334e-05, 'epoch': 0.03}\n",
      "{'loss': 3.55, 'grad_norm': 6.869238376617432, 'learning_rate': 3.6666666666666666e-05, 'epoch': 0.03}\n",
      "{'loss': 3.2877, 'grad_norm': 6.502027988433838, 'learning_rate': 3.65e-05, 'epoch': 0.03}\n",
      "{'loss': 3.3563, 'grad_norm': 6.42698335647583, 'learning_rate': 3.633333333333333e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4551, 'grad_norm': 7.074339389801025, 'learning_rate': 3.6166666666666674e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4045, 'grad_norm': 6.3441243171691895, 'learning_rate': 3.6e-05, 'epoch': 0.03}\n",
      "{'loss': 3.5066, 'grad_norm': 6.213286876678467, 'learning_rate': 3.5833333333333335e-05, 'epoch': 0.03}\n",
      "{'loss': 3.5359, 'grad_norm': 6.307214736938477, 'learning_rate': 3.566666666666667e-05, 'epoch': 0.03}\n",
      "{'loss': 3.2939, 'grad_norm': 7.124059677124023, 'learning_rate': 3.55e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4906, 'grad_norm': 6.685220718383789, 'learning_rate': 3.5333333333333336e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4508, 'grad_norm': 7.447773456573486, 'learning_rate': 3.516666666666667e-05, 'epoch': 0.03}\n",
      "{'loss': 3.2658, 'grad_norm': 7.889046669006348, 'learning_rate': 3.5e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4564, 'grad_norm': 7.642588138580322, 'learning_rate': 3.483333333333334e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4225, 'grad_norm': 6.980640411376953, 'learning_rate': 3.466666666666667e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4604, 'grad_norm': 7.432607173919678, 'learning_rate': 3.45e-05, 'epoch': 0.03}\n",
      "{'loss': 3.568, 'grad_norm': 7.337695121765137, 'learning_rate': 3.433333333333333e-05, 'epoch': 0.03}\n",
      "{'loss': 3.3611, 'grad_norm': 6.489591121673584, 'learning_rate': 3.4166666666666666e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4332, 'grad_norm': 8.018183708190918, 'learning_rate': 3.4000000000000007e-05, 'epoch': 0.03}\n",
      "{'loss': 3.5314, 'grad_norm': 5.927342891693115, 'learning_rate': 3.3833333333333334e-05, 'epoch': 0.03}\n",
      "{'loss': 3.3209, 'grad_norm': 6.991089344024658, 'learning_rate': 3.366666666666667e-05, 'epoch': 0.03}\n",
      "{'loss': 3.4604, 'grad_norm': 7.143759727478027, 'learning_rate': 3.35e-05, 'epoch': 0.03}\n",
      "{'loss': 3.3996, 'grad_norm': 7.967883586883545, 'learning_rate': 3.3333333333333335e-05, 'epoch': 0.03}\n",
      " 33%|█████████████                          | 1000/3000 [10:17<19:13,  1.73it/s]/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/torch/utils/data/dataloader.py:558: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 8, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
      "  warnings.warn(_create_warning_msg(\n",
      "***** Running Evaluation *****\n",
      "  Num examples = 50\n",
      "  Batch size = 16\n",
      "\n",
      "  0%|                                                     | 0/4 [00:00<?, ?it/s]\u001b[A\n",
      " 50%|██████████████████████▌                      | 2/4 [00:21<00:21, 10.56s/it]\u001b[A\n",
      " 75%|█████████████████████████████████▊           | 3/4 [00:24<00:07,  7.41s/it]\u001b[A\n",
      "                                                                                \u001b[A\n",
      "\u001b[A{'eval_rouge-1': 32.60244599999999, 'eval_rouge-2': 6.7408019999999995, 'eval_rouge-l': 25.354283999999996, 'eval_bleu-4': 0.03230725298238334, 'eval_runtime': 30.0711, 'eval_samples_per_second': 1.663, 'eval_steps_per_second': 0.133, 'epoch': 0.03}\n",
      " 33%|█████████████                          | 1000/3000 [10:47<19:13,  1.73it/s]\n",
      "100%|█████████████████████████████████████████████| 4/4 [00:26<00:00,  5.51s/it]\u001b[A\n",
      "                                                                                \u001b[ASaving model checkpoint to ./output/checkpoint-1000\n",
      "/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/peft/utils/save_and_load.py:154: UserWarning: Could not find a config file in /home/THUDM/chatglm3-6b/chatglm3-6b - will assume that the vocabulary was not modified.\n",
      "  warnings.warn(\n",
      "{'loss': 3.4465, 'grad_norm': 6.8557353019714355, 'learning_rate': 3.316666666666667e-05, 'epoch': 0.04}\n",
      "{'loss': 3.4562, 'grad_norm': 7.298301696777344, 'learning_rate': 3.3e-05, 'epoch': 0.04}\n",
      "{'loss': 3.6516, 'grad_norm': 8.12430191040039, 'learning_rate': 3.283333333333333e-05, 'epoch': 0.04}\n",
      "{'loss': 3.4076, 'grad_norm': 6.431674003601074, 'learning_rate': 3.266666666666667e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3879, 'grad_norm': 8.576298713684082, 'learning_rate': 3.2500000000000004e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3564, 'grad_norm': 7.748924732208252, 'learning_rate': 3.233333333333333e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3889, 'grad_norm': 7.136866569519043, 'learning_rate': 3.2166666666666665e-05, 'epoch': 0.04}\n",
      "{'loss': 3.4619, 'grad_norm': 7.1721415519714355, 'learning_rate': 3.2000000000000005e-05, 'epoch': 0.04}\n",
      "{'loss': 3.5264, 'grad_norm': 7.150730609893799, 'learning_rate': 3.183333333333334e-05, 'epoch': 0.04}\n",
      "{'loss': 3.467, 'grad_norm': 6.501997470855713, 'learning_rate': 3.1666666666666666e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3459, 'grad_norm': 6.818332195281982, 'learning_rate': 3.15e-05, 'epoch': 0.04}\n",
      "{'loss': 3.5232, 'grad_norm': 7.906378269195557, 'learning_rate': 3.1333333333333334e-05, 'epoch': 0.04}\n",
      "{'loss': 3.4326, 'grad_norm': 7.284402370452881, 'learning_rate': 3.116666666666667e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3602, 'grad_norm': 8.024080276489258, 'learning_rate': 3.1e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3201, 'grad_norm': 7.494572639465332, 'learning_rate': 3.0833333333333335e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3598, 'grad_norm': 7.067225456237793, 'learning_rate': 3.066666666666667e-05, 'epoch': 0.04}\n",
      "{'loss': 3.452, 'grad_norm': 6.661962509155273, 'learning_rate': 3.05e-05, 'epoch': 0.04}\n",
      "{'loss': 3.4705, 'grad_norm': 6.531052112579346, 'learning_rate': 3.0333333333333337e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3596, 'grad_norm': 6.737190246582031, 'learning_rate': 3.016666666666667e-05, 'epoch': 0.04}\n",
      "{'loss': 3.409, 'grad_norm': 6.39009952545166, 'learning_rate': 3e-05, 'epoch': 0.04}\n",
      "{'loss': 3.2451, 'grad_norm': 6.724067687988281, 'learning_rate': 2.9833333333333335e-05, 'epoch': 0.04}\n",
      "{'loss': 3.341, 'grad_norm': 7.354414463043213, 'learning_rate': 2.9666666666666672e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3805, 'grad_norm': 7.344930648803711, 'learning_rate': 2.95e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3791, 'grad_norm': 10.14055347442627, 'learning_rate': 2.9333333333333336e-05, 'epoch': 0.04}\n",
      "{'loss': 3.4473, 'grad_norm': 6.737884044647217, 'learning_rate': 2.916666666666667e-05, 'epoch': 0.04}\n",
      "{'loss': 3.2812, 'grad_norm': 7.638746738433838, 'learning_rate': 2.9e-05, 'epoch': 0.04}\n",
      "{'loss': 3.449, 'grad_norm': 7.161406993865967, 'learning_rate': 2.8833333333333334e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3344, 'grad_norm': 7.265938758850098, 'learning_rate': 2.8666666666666668e-05, 'epoch': 0.04}\n",
      "{'loss': 3.3816, 'grad_norm': 6.997196197509766, 'learning_rate': 2.8499999999999998e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4795, 'grad_norm': 7.4326558113098145, 'learning_rate': 2.8333333333333335e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4619, 'grad_norm': 6.8897576332092285, 'learning_rate': 2.816666666666667e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4539, 'grad_norm': 6.7542338371276855, 'learning_rate': 2.8000000000000003e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4018, 'grad_norm': 10.103724479675293, 'learning_rate': 2.7833333333333333e-05, 'epoch': 0.05}\n",
      "{'loss': 3.3008, 'grad_norm': 7.4399800300598145, 'learning_rate': 2.7666666666666667e-05, 'epoch': 0.05}\n",
      "{'loss': 3.348, 'grad_norm': 7.466402530670166, 'learning_rate': 2.7500000000000004e-05, 'epoch': 0.05}\n",
      "{'loss': 3.2979, 'grad_norm': 7.873271942138672, 'learning_rate': 2.733333333333333e-05, 'epoch': 0.05}\n",
      "{'loss': 3.5158, 'grad_norm': 7.290464401245117, 'learning_rate': 2.716666666666667e-05, 'epoch': 0.05}\n",
      "{'loss': 3.3834, 'grad_norm': 7.113284587860107, 'learning_rate': 2.7000000000000002e-05, 'epoch': 0.05}\n",
      "{'loss': 3.3561, 'grad_norm': 7.134914875030518, 'learning_rate': 2.6833333333333333e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4191, 'grad_norm': 6.724206447601318, 'learning_rate': 2.6666666666666667e-05, 'epoch': 0.05}\n",
      "{'loss': 3.3488, 'grad_norm': 7.595027923583984, 'learning_rate': 2.6500000000000004e-05, 'epoch': 0.05}\n",
      "{'loss': 3.2662, 'grad_norm': 7.605708122253418, 'learning_rate': 2.633333333333333e-05, 'epoch': 0.05}\n",
      "{'loss': 3.3859, 'grad_norm': 7.692331314086914, 'learning_rate': 2.6166666666666668e-05, 'epoch': 0.05}\n",
      "{'loss': 3.3598, 'grad_norm': 7.227190017700195, 'learning_rate': 2.6000000000000002e-05, 'epoch': 0.05}\n",
      "{'loss': 3.2664, 'grad_norm': 6.833502769470215, 'learning_rate': 2.5833333333333336e-05, 'epoch': 0.05}\n",
      "{'loss': 3.3965, 'grad_norm': 7.1370038986206055, 'learning_rate': 2.5666666666666666e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4342, 'grad_norm': 9.274142265319824, 'learning_rate': 2.5500000000000003e-05, 'epoch': 0.05}\n",
      "{'loss': 3.298, 'grad_norm': 6.820730209350586, 'learning_rate': 2.5333333333333337e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4404, 'grad_norm': 7.401223182678223, 'learning_rate': 2.5166666666666667e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4551, 'grad_norm': 6.796747207641602, 'learning_rate': 2.5e-05, 'epoch': 0.05}\n",
      " 50%|███████████████████▌                   | 1500/3000 [15:22<12:15,  2.04it/s]/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/torch/utils/data/dataloader.py:558: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 8, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
      "  warnings.warn(_create_warning_msg(\n",
      "***** Running Evaluation *****\n",
      "  Num examples = 50\n",
      "  Batch size = 16\n",
      "\n",
      "  0%|                                                     | 0/4 [00:00<?, ?it/s]\u001b[A\n",
      " 50%|██████████████████████▌                      | 2/4 [00:03<00:03,  1.69s/it]\u001b[A\n",
      " 75%|█████████████████████████████████▊           | 3/4 [00:06<00:02,  2.33s/it]\u001b[A\n",
      "                                                                                \u001b[A\n",
      "\u001b[A{'eval_rouge-1': 32.436854, 'eval_rouge-2': 7.474918, 'eval_rouge-l': 25.824762000000007, 'eval_bleu-4': 0.03466506289672621, 'eval_runtime': 13.3056, 'eval_samples_per_second': 3.758, 'eval_steps_per_second': 0.301, 'epoch': 0.05}\n",
      " 50%|███████████████████▌                   | 1500/3000 [15:35<12:15,  2.04it/s]\n",
      "100%|█████████████████████████████████████████████| 4/4 [00:09<00:00,  2.46s/it]\u001b[A\n",
      "                                                                                \u001b[ASaving model checkpoint to ./output/checkpoint-1500\n",
      "/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/peft/utils/save_and_load.py:154: UserWarning: Could not find a config file in /home/THUDM/chatglm3-6b/chatglm3-6b - will assume that the vocabulary was not modified.\n",
      "  warnings.warn(\n",
      "{'loss': 3.342, 'grad_norm': 6.886325836181641, 'learning_rate': 2.4833333333333335e-05, 'epoch': 0.05}\n",
      "{'loss': 3.3896, 'grad_norm': 7.96791934967041, 'learning_rate': 2.466666666666667e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4387, 'grad_norm': 8.194278717041016, 'learning_rate': 2.45e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4045, 'grad_norm': 6.897129535675049, 'learning_rate': 2.4333333333333336e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4947, 'grad_norm': 7.30853271484375, 'learning_rate': 2.4166666666666667e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4094, 'grad_norm': 8.307295799255371, 'learning_rate': 2.4e-05, 'epoch': 0.05}\n",
      "{'loss': 3.4693, 'grad_norm': 8.14916706085205, 'learning_rate': 2.3833333333333334e-05, 'epoch': 0.05}\n",
      "{'loss': 3.434, 'grad_norm': 7.624844551086426, 'learning_rate': 2.3666666666666668e-05, 'epoch': 0.06}\n",
      "{'loss': 3.5123, 'grad_norm': 9.305159568786621, 'learning_rate': 2.35e-05, 'epoch': 0.06}\n",
      "{'loss': 3.391, 'grad_norm': 7.131006240844727, 'learning_rate': 2.3333333333333336e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3652, 'grad_norm': 7.988613605499268, 'learning_rate': 2.3166666666666666e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3689, 'grad_norm': 8.601096153259277, 'learning_rate': 2.3000000000000003e-05, 'epoch': 0.06}\n",
      "{'loss': 3.4736, 'grad_norm': 7.395939826965332, 'learning_rate': 2.2833333333333334e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3199, 'grad_norm': 8.006897926330566, 'learning_rate': 2.2666666666666668e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3687, 'grad_norm': 7.511524677276611, 'learning_rate': 2.25e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3021, 'grad_norm': 7.078132629394531, 'learning_rate': 2.2333333333333335e-05, 'epoch': 0.06}\n",
      "{'loss': 3.4783, 'grad_norm': 8.707923889160156, 'learning_rate': 2.216666666666667e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3658, 'grad_norm': 7.1245036125183105, 'learning_rate': 2.2000000000000003e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3727, 'grad_norm': 7.372898578643799, 'learning_rate': 2.1833333333333333e-05, 'epoch': 0.06}\n",
      "{'loss': 3.5146, 'grad_norm': 7.071441173553467, 'learning_rate': 2.1666666666666667e-05, 'epoch': 0.06}\n",
      "{'loss': 3.4619, 'grad_norm': 7.249298095703125, 'learning_rate': 2.15e-05, 'epoch': 0.06}\n",
      "{'loss': 3.5008, 'grad_norm': 7.472878456115723, 'learning_rate': 2.1333333333333335e-05, 'epoch': 0.06}\n",
      "{'loss': 3.4006, 'grad_norm': 7.496927738189697, 'learning_rate': 2.116666666666667e-05, 'epoch': 0.06}\n",
      "{'loss': 3.4, 'grad_norm': 7.415350437164307, 'learning_rate': 2.1e-05, 'epoch': 0.06}\n",
      "{'loss': 3.4668, 'grad_norm': 7.458242416381836, 'learning_rate': 2.0833333333333336e-05, 'epoch': 0.06}\n",
      "{'loss': 3.4436, 'grad_norm': 7.8659892082214355, 'learning_rate': 2.0666666666666666e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3615, 'grad_norm': 7.989443302154541, 'learning_rate': 2.05e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3502, 'grad_norm': 8.014410018920898, 'learning_rate': 2.0333333333333334e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3924, 'grad_norm': 8.137262344360352, 'learning_rate': 2.0166666666666668e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3377, 'grad_norm': 7.778519630432129, 'learning_rate': 2e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3781, 'grad_norm': 8.95943832397461, 'learning_rate': 1.9833333333333335e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3393, 'grad_norm': 7.729458332061768, 'learning_rate': 1.9666666666666666e-05, 'epoch': 0.06}\n",
      "{'loss': 3.5746, 'grad_norm': 8.026848793029785, 'learning_rate': 1.9500000000000003e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3449, 'grad_norm': 8.561516761779785, 'learning_rate': 1.9333333333333333e-05, 'epoch': 0.06}\n",
      "{'loss': 3.4922, 'grad_norm': 9.02189826965332, 'learning_rate': 1.9166666666666667e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3783, 'grad_norm': 7.458593845367432, 'learning_rate': 1.9e-05, 'epoch': 0.06}\n",
      "{'loss': 3.3127, 'grad_norm': 8.221842765808105, 'learning_rate': 1.8833333333333335e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3049, 'grad_norm': 7.903212547302246, 'learning_rate': 1.866666666666667e-05, 'epoch': 0.07}\n",
      "{'loss': 3.4053, 'grad_norm': 7.406469345092773, 'learning_rate': 1.85e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3727, 'grad_norm': 7.863272190093994, 'learning_rate': 1.8333333333333333e-05, 'epoch': 0.07}\n",
      "{'loss': 3.391, 'grad_norm': 8.173393249511719, 'learning_rate': 1.8166666666666667e-05, 'epoch': 0.07}\n",
      "{'loss': 3.4797, 'grad_norm': 7.510149955749512, 'learning_rate': 1.8e-05, 'epoch': 0.07}\n",
      "{'loss': 3.2816, 'grad_norm': 8.009127616882324, 'learning_rate': 1.7833333333333334e-05, 'epoch': 0.07}\n",
      "{'loss': 3.4998, 'grad_norm': 7.619736194610596, 'learning_rate': 1.7666666666666668e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3625, 'grad_norm': 6.918872356414795, 'learning_rate': 1.75e-05, 'epoch': 0.07}\n",
      "{'loss': 3.2826, 'grad_norm': 8.746355056762695, 'learning_rate': 1.7333333333333336e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3678, 'grad_norm': 7.6839189529418945, 'learning_rate': 1.7166666666666666e-05, 'epoch': 0.07}\n",
      "{'loss': 3.2416, 'grad_norm': 7.582135200500488, 'learning_rate': 1.7000000000000003e-05, 'epoch': 0.07}\n",
      "{'loss': 3.4182, 'grad_norm': 7.105817794799805, 'learning_rate': 1.6833333333333334e-05, 'epoch': 0.07}\n",
      "{'loss': 3.4689, 'grad_norm': 8.045584678649902, 'learning_rate': 1.6666666666666667e-05, 'epoch': 0.07}\n",
      " 67%|██████████████████████████             | 2000/3000 [20:09<08:58,  1.86it/s]/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/torch/utils/data/dataloader.py:558: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 8, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
      "  warnings.warn(_create_warning_msg(\n",
      "***** Running Evaluation *****\n",
      "  Num examples = 50\n",
      "  Batch size = 16\n",
      "\n",
      "  0%|                                                     | 0/4 [00:00<?, ?it/s]\u001b[A\n",
      " 50%|██████████████████████▌                      | 2/4 [00:03<00:03,  1.91s/it]\u001b[A\n",
      " 75%|█████████████████████████████████▊           | 3/4 [00:24<00:09,  9.74s/it]\u001b[A\n",
      "                                                                                \u001b[A\n",
      "\u001b[A{'eval_rouge-1': 31.13191, 'eval_rouge-2': 6.769653999999999, 'eval_rouge-l': 23.465980000000005, 'eval_bleu-4': 0.03220883587618987, 'eval_runtime': 64.8071, 'eval_samples_per_second': 0.772, 'eval_steps_per_second': 0.062, 'epoch': 0.07}\n",
      " 67%|██████████████████████████             | 2000/3000 [21:14<08:58,  1.86it/s]\n",
      "100%|█████████████████████████████████████████████| 4/4 [00:43<00:00, 13.05s/it]\u001b[A\n",
      "                                                                                \u001b[ASaving model checkpoint to ./output/checkpoint-2000\n",
      "/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/peft/utils/save_and_load.py:154: UserWarning: Could not find a config file in /home/THUDM/chatglm3-6b/chatglm3-6b - will assume that the vocabulary was not modified.\n",
      "  warnings.warn(\n",
      "{'loss': 3.3887, 'grad_norm': 8.935744285583496, 'learning_rate': 1.65e-05, 'epoch': 0.07}\n",
      "{'loss': 3.4965, 'grad_norm': 7.457391738891602, 'learning_rate': 1.6333333333333335e-05, 'epoch': 0.07}\n",
      "{'loss': 3.5537, 'grad_norm': 8.841355323791504, 'learning_rate': 1.6166666666666665e-05, 'epoch': 0.07}\n",
      "{'loss': 3.493, 'grad_norm': 8.54100513458252, 'learning_rate': 1.6000000000000003e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3674, 'grad_norm': 8.289497375488281, 'learning_rate': 1.5833333333333333e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3232, 'grad_norm': 7.807378768920898, 'learning_rate': 1.5666666666666667e-05, 'epoch': 0.07}\n",
      "{'loss': 3.44, 'grad_norm': 8.112716674804688, 'learning_rate': 1.55e-05, 'epoch': 0.07}\n",
      "{'loss': 3.4195, 'grad_norm': 8.292351722717285, 'learning_rate': 1.5333333333333334e-05, 'epoch': 0.07}\n",
      "{'loss': 3.4342, 'grad_norm': 7.5216803550720215, 'learning_rate': 1.5166666666666668e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3574, 'grad_norm': 7.590492248535156, 'learning_rate': 1.5e-05, 'epoch': 0.07}\n",
      "{'loss': 3.2975, 'grad_norm': 7.689237117767334, 'learning_rate': 1.4833333333333336e-05, 'epoch': 0.07}\n",
      "{'loss': 3.5859, 'grad_norm': 7.8930816650390625, 'learning_rate': 1.4666666666666668e-05, 'epoch': 0.07}\n",
      "{'loss': 3.2527, 'grad_norm': 7.597989559173584, 'learning_rate': 1.45e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3627, 'grad_norm': 8.330504417419434, 'learning_rate': 1.4333333333333334e-05, 'epoch': 0.07}\n",
      "{'loss': 3.3965, 'grad_norm': 7.405366897583008, 'learning_rate': 1.4166666666666668e-05, 'epoch': 0.08}\n",
      "{'loss': 3.5193, 'grad_norm': 8.180068969726562, 'learning_rate': 1.4000000000000001e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3955, 'grad_norm': 7.0982770919799805, 'learning_rate': 1.3833333333333334e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4154, 'grad_norm': 7.8367085456848145, 'learning_rate': 1.3666666666666666e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3551, 'grad_norm': 7.593965530395508, 'learning_rate': 1.3500000000000001e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4363, 'grad_norm': 7.362760543823242, 'learning_rate': 1.3333333333333333e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4441, 'grad_norm': 6.767932415008545, 'learning_rate': 1.3166666666666665e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4213, 'grad_norm': 7.887601852416992, 'learning_rate': 1.3000000000000001e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4186, 'grad_norm': 8.088800430297852, 'learning_rate': 1.2833333333333333e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3727, 'grad_norm': 8.26609992980957, 'learning_rate': 1.2666666666666668e-05, 'epoch': 0.08}\n",
      "{'loss': 3.2453, 'grad_norm': 8.502245903015137, 'learning_rate': 1.25e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3637, 'grad_norm': 8.021450996398926, 'learning_rate': 1.2333333333333334e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4305, 'grad_norm': 8.903558731079102, 'learning_rate': 1.2166666666666668e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4645, 'grad_norm': 7.64727783203125, 'learning_rate': 1.2e-05, 'epoch': 0.08}\n",
      "{'loss': 3.2961, 'grad_norm': 8.641111373901367, 'learning_rate': 1.1833333333333334e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3619, 'grad_norm': 8.293277740478516, 'learning_rate': 1.1666666666666668e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3184, 'grad_norm': 8.476251602172852, 'learning_rate': 1.1500000000000002e-05, 'epoch': 0.08}\n",
      "{'loss': 3.332, 'grad_norm': 8.666253089904785, 'learning_rate': 1.1333333333333334e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3637, 'grad_norm': 9.174942016601562, 'learning_rate': 1.1166666666666668e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3641, 'grad_norm': 7.7430877685546875, 'learning_rate': 1.1000000000000001e-05, 'epoch': 0.08}\n",
      "{'loss': 3.2707, 'grad_norm': 8.497590065002441, 'learning_rate': 1.0833333333333334e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3787, 'grad_norm': 8.19243335723877, 'learning_rate': 1.0666666666666667e-05, 'epoch': 0.08}\n",
      "{'loss': 3.3514, 'grad_norm': 7.872930526733398, 'learning_rate': 1.05e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4947, 'grad_norm': 8.53699779510498, 'learning_rate': 1.0333333333333333e-05, 'epoch': 0.08}\n",
      "{'loss': 3.2326, 'grad_norm': 8.492074966430664, 'learning_rate': 1.0166666666666667e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4568, 'grad_norm': 7.752565860748291, 'learning_rate': 1e-05, 'epoch': 0.08}\n",
      "{'loss': 3.4559, 'grad_norm': 8.142252922058105, 'learning_rate': 9.833333333333333e-06, 'epoch': 0.08}\n",
      "{'loss': 3.2754, 'grad_norm': 8.008235931396484, 'learning_rate': 9.666666666666667e-06, 'epoch': 0.08}\n",
      "{'loss': 3.3717, 'grad_norm': 7.324918270111084, 'learning_rate': 9.5e-06, 'epoch': 0.08}\n",
      "{'loss': 3.382, 'grad_norm': 8.044609069824219, 'learning_rate': 9.333333333333334e-06, 'epoch': 0.09}\n",
      "{'loss': 3.2738, 'grad_norm': 7.684770584106445, 'learning_rate': 9.166666666666666e-06, 'epoch': 0.09}\n",
      "{'loss': 3.3096, 'grad_norm': 7.749144554138184, 'learning_rate': 9e-06, 'epoch': 0.09}\n",
      "{'loss': 3.259, 'grad_norm': 8.70217514038086, 'learning_rate': 8.833333333333334e-06, 'epoch': 0.09}\n",
      "{'loss': 3.435, 'grad_norm': 7.426738262176514, 'learning_rate': 8.666666666666668e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4709, 'grad_norm': 7.7865519523620605, 'learning_rate': 8.500000000000002e-06, 'epoch': 0.09}\n",
      "{'loss': 3.3943, 'grad_norm': 9.892801284790039, 'learning_rate': 8.333333333333334e-06, 'epoch': 0.09}\n",
      " 83%|████████████████████████████████▌      | 2500/3000 [25:49<04:29,  1.85it/s]/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/torch/utils/data/dataloader.py:558: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 8, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
      "  warnings.warn(_create_warning_msg(\n",
      "***** Running Evaluation *****\n",
      "  Num examples = 50\n",
      "  Batch size = 16\n",
      "\n",
      "  0%|                                                     | 0/4 [00:00<?, ?it/s]\u001b[A\n",
      " 50%|██████████████████████▌                      | 2/4 [00:21<00:21, 10.53s/it]\u001b[A\n",
      " 75%|█████████████████████████████████▊           | 3/4 [00:24<00:07,  7.52s/it]\u001b[A\n",
      "                                                                                \u001b[A\n",
      "\u001b[A{'eval_rouge-1': 30.969588, 'eval_rouge-2': 6.800566, 'eval_rouge-l': 24.294757999999998, 'eval_bleu-4': 0.03356912672913057, 'eval_runtime': 49.0748, 'eval_samples_per_second': 1.019, 'eval_steps_per_second': 0.082, 'epoch': 0.09}\n",
      " 83%|████████████████████████████████▌      | 2500/3000 [26:38<04:29,  1.85it/s]\n",
      "100%|█████████████████████████████████████████████| 4/4 [00:27<00:00,  5.86s/it]\u001b[A\n",
      "                                                                                \u001b[ASaving model checkpoint to ./output/checkpoint-2500\n",
      "/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/peft/utils/save_and_load.py:154: UserWarning: Could not find a config file in /home/THUDM/chatglm3-6b/chatglm3-6b - will assume that the vocabulary was not modified.\n",
      "  warnings.warn(\n",
      "{'loss': 3.3, 'grad_norm': 8.46349811553955, 'learning_rate': 8.166666666666668e-06, 'epoch': 0.09}\n",
      "{'loss': 3.34, 'grad_norm': 10.470544815063477, 'learning_rate': 8.000000000000001e-06, 'epoch': 0.09}\n",
      "{'loss': 3.2449, 'grad_norm': 7.902798652648926, 'learning_rate': 7.833333333333333e-06, 'epoch': 0.09}\n",
      "{'loss': 3.398, 'grad_norm': 8.337210655212402, 'learning_rate': 7.666666666666667e-06, 'epoch': 0.09}\n",
      "{'loss': 3.3932, 'grad_norm': 7.770275115966797, 'learning_rate': 7.5e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4, 'grad_norm': 8.301069259643555, 'learning_rate': 7.333333333333334e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4705, 'grad_norm': 8.089156150817871, 'learning_rate': 7.166666666666667e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4797, 'grad_norm': 8.608868598937988, 'learning_rate': 7.000000000000001e-06, 'epoch': 0.09}\n",
      "{'loss': 3.375, 'grad_norm': 8.332864761352539, 'learning_rate': 6.833333333333333e-06, 'epoch': 0.09}\n",
      "{'loss': 3.483, 'grad_norm': 8.666097640991211, 'learning_rate': 6.666666666666667e-06, 'epoch': 0.09}\n",
      "{'loss': 3.3576, 'grad_norm': 8.300015449523926, 'learning_rate': 6.5000000000000004e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4215, 'grad_norm': 7.784935474395752, 'learning_rate': 6.333333333333334e-06, 'epoch': 0.09}\n",
      "{'loss': 3.5232, 'grad_norm': 7.565057277679443, 'learning_rate': 6.166666666666667e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4445, 'grad_norm': 8.59267520904541, 'learning_rate': 6e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4055, 'grad_norm': 8.08096981048584, 'learning_rate': 5.833333333333334e-06, 'epoch': 0.09}\n",
      "{'loss': 3.3514, 'grad_norm': 8.018978118896484, 'learning_rate': 5.666666666666667e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4125, 'grad_norm': 8.624505043029785, 'learning_rate': 5.500000000000001e-06, 'epoch': 0.09}\n",
      "{'loss': 3.2703, 'grad_norm': 7.5681562423706055, 'learning_rate': 5.333333333333334e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4752, 'grad_norm': 8.657526969909668, 'learning_rate': 5.166666666666667e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4514, 'grad_norm': 9.29171085357666, 'learning_rate': 5e-06, 'epoch': 0.09}\n",
      "{'loss': 3.4266, 'grad_norm': 8.524595260620117, 'learning_rate': 4.833333333333333e-06, 'epoch': 0.09}\n",
      "{'loss': 3.2494, 'grad_norm': 7.607010364532471, 'learning_rate': 4.666666666666667e-06, 'epoch': 0.09}\n",
      "{'loss': 3.3779, 'grad_norm': 8.053398132324219, 'learning_rate': 4.5e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3848, 'grad_norm': 8.095890998840332, 'learning_rate': 4.333333333333334e-06, 'epoch': 0.1}\n",
      "{'loss': 3.459, 'grad_norm': 8.952899932861328, 'learning_rate': 4.166666666666667e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3984, 'grad_norm': 8.192824363708496, 'learning_rate': 4.000000000000001e-06, 'epoch': 0.1}\n",
      "{'loss': 3.352, 'grad_norm': 8.325698852539062, 'learning_rate': 3.833333333333334e-06, 'epoch': 0.1}\n",
      "{'loss': 3.2629, 'grad_norm': 8.445439338684082, 'learning_rate': 3.666666666666667e-06, 'epoch': 0.1}\n",
      "{'loss': 3.283, 'grad_norm': 8.199467658996582, 'learning_rate': 3.5000000000000004e-06, 'epoch': 0.1}\n",
      "{'loss': 3.2426, 'grad_norm': 7.870479583740234, 'learning_rate': 3.3333333333333333e-06, 'epoch': 0.1}\n",
      "{'loss': 3.4449, 'grad_norm': 7.903214454650879, 'learning_rate': 3.166666666666667e-06, 'epoch': 0.1}\n",
      "{'loss': 3.376, 'grad_norm': 8.103277206420898, 'learning_rate': 3e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3902, 'grad_norm': 7.983164310455322, 'learning_rate': 2.8333333333333335e-06, 'epoch': 0.1}\n",
      "{'loss': 3.442, 'grad_norm': 9.12685489654541, 'learning_rate': 2.666666666666667e-06, 'epoch': 0.1}\n",
      "{'loss': 3.4068, 'grad_norm': 8.572249412536621, 'learning_rate': 2.5e-06, 'epoch': 0.1}\n",
      "{'loss': 3.341, 'grad_norm': 8.409156799316406, 'learning_rate': 2.3333333333333336e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3771, 'grad_norm': 8.708724021911621, 'learning_rate': 2.166666666666667e-06, 'epoch': 0.1}\n",
      "{'loss': 3.5119, 'grad_norm': 9.187295913696289, 'learning_rate': 2.0000000000000003e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3068, 'grad_norm': 8.062212944030762, 'learning_rate': 1.8333333333333335e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3312, 'grad_norm': 8.95043659210205, 'learning_rate': 1.6666666666666667e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3051, 'grad_norm': 7.871861934661865, 'learning_rate': 1.5e-06, 'epoch': 0.1}\n",
      "{'loss': 3.2479, 'grad_norm': 7.292817115783691, 'learning_rate': 1.3333333333333334e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3572, 'grad_norm': 9.081594467163086, 'learning_rate': 1.1666666666666668e-06, 'epoch': 0.1}\n",
      "{'loss': 3.2566, 'grad_norm': 8.247235298156738, 'learning_rate': 1.0000000000000002e-06, 'epoch': 0.1}\n",
      "{'loss': 3.3791, 'grad_norm': 8.153589248657227, 'learning_rate': 8.333333333333333e-07, 'epoch': 0.1}\n",
      "{'loss': 3.2072, 'grad_norm': 9.123135566711426, 'learning_rate': 6.666666666666667e-07, 'epoch': 0.1}\n",
      "{'loss': 3.4496, 'grad_norm': 8.827864646911621, 'learning_rate': 5.000000000000001e-07, 'epoch': 0.1}\n",
      "{'loss': 3.4252, 'grad_norm': 8.91972827911377, 'learning_rate': 3.3333333333333335e-07, 'epoch': 0.1}\n",
      "{'loss': 3.4764, 'grad_norm': 8.07105541229248, 'learning_rate': 1.6666666666666668e-07, 'epoch': 0.1}\n",
      "{'loss': 3.3674, 'grad_norm': 7.78759241104126, 'learning_rate': 0.0, 'epoch': 0.1}\n",
      "100%|███████████████████████████████████████| 3000/3000 [31:12<00:00,  1.94it/s]/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/torch/utils/data/dataloader.py:558: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 8, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
      "  warnings.warn(_create_warning_msg(\n",
      "***** Running Evaluation *****\n",
      "  Num examples = 50\n",
      "  Batch size = 16\n",
      "\n",
      "  0%|                                                     | 0/4 [00:00<?, ?it/s]\u001b[A\n",
      " 50%|██████████████████████▌                      | 2/4 [00:21<00:21, 10.58s/it]\u001b[A\n",
      " 75%|█████████████████████████████████▊           | 3/4 [00:23<00:07,  7.31s/it]\u001b[A\n",
      "                                                                                \u001b[A\n",
      "\u001b[A{'eval_rouge-1': 31.689214000000003, 'eval_rouge-2': 7.450644, 'eval_rouge-l': 23.799862000000005, 'eval_bleu-4': 0.03637199828332995, 'eval_runtime': 64.3946, 'eval_samples_per_second': 0.776, 'eval_steps_per_second': 0.062, 'epoch': 0.1}\n",
      "100%|███████████████████████████████████████| 3000/3000 [32:17<00:00,  1.94it/s]\n",
      "100%|█████████████████████████████████████████████| 4/4 [00:42<00:00, 11.57s/it]\u001b[A\n",
      "                                                                                \u001b[ASaving model checkpoint to ./output/checkpoint-3000\n",
      "/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/peft/utils/save_and_load.py:154: UserWarning: Could not find a config file in /home/THUDM/chatglm3-6b/chatglm3-6b - will assume that the vocabulary was not modified.\n",
      "  warnings.warn(\n",
      "\n",
      "\n",
      "Training completed. Do not forget to share your model on huggingface.co/models =)\n",
      "\n",
      "\n",
      "{'train_runtime': 1937.24, 'train_samples_per_second': 6.194, 'train_steps_per_second': 1.549, 'train_loss': 3.445817057291667, 'epoch': 0.1}\n",
      "100%|███████████████████████████████████████| 3000/3000 [32:17<00:00,  1.55it/s]\n",
      "/root/miniconda3/envs/chatglm-finetune/lib/python3.11/site-packages/torch/utils/data/dataloader.py:558: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 8, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
      "  warnings.warn(_create_warning_msg(\n",
      "***** Running Prediction *****\n",
      "  Num examples = 1070\n",
      "  Batch size = 16\n",
      "100%|███████████████████████████████████████████| 67/67 [15:46<00:00, 14.13s/it]\n"
     ]
    }
   ],
   "source": [
    "!CUDA_VISIBLE_DEVICES=0 NCCL_P2P_DISABLE=\"1\" NCCL_IB_DISABLE=\"1\" python finetune_hf.py  data/AdvertiseGen_fix  /home/THUDM/chatglm3-6b/chatglm3-6b  configs/lora.yaml"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9418f6c5c264601",
   "metadata": {
    "collapsed": false,
    "id": "d9418f6c5c264601",
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "source": [
    "## 3. 使用微调的数据集进行推理\n",
    "在完成微调任务之后，我们可以查看到 `output` 文件夹下多了很多个`checkpoint-*`的文件夹，这些文件夹代表了训练的轮数。\n",
    "我们选择最后一轮的微调权重，并使用inference进行导入。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "5060015c24e97ae",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-14T06:23:52.725227Z",
     "start_time": "2024-04-14T06:23:41.284552Z"
    },
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "5060015c24e97ae",
    "outputId": "d3f03d0d-46bf-4c74-9b00-dc0160da0e15"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading checkpoint shards: 100%|██████████████████| 7/7 [00:05<00:00,  1.21it/s]\n",
      "Setting eos_token is not supported, use the default one.\n",
      "Setting pad_token is not supported, use the default one.\n",
      "Setting unk_token is not supported, use the default one.\n",
      "这款连衣裙采用了网纱拼接设计，时尚感十足，性感优雅。搭配木耳边压褶，不规则的网纱拼接，使得裙身更具层次感，视觉上更加显瘦，而裙摆的百褶设计，修饰身形，又增添几分灵动感。套头拉链，方便穿脱，而裙身前襟的压褶设计，让裙身更具有立体感，精致美观。\n"
     ]
    }
   ],
   "source": [
    "!CUDA_VISIBLE_DEVICES=0 NCCL_P2P_DISABLE=\"1\" NCCL_IB_DISABLE=\"1\" python inference_hf.py output/checkpoint-3000/ --prompt \"类型#裙*版型#显瘦*材质#网纱*风格#性感*裙型#百褶*裙下摆#压褶*裙长#连衣裙*裙衣门襟#拉链*裙衣门襟#套头*裙款式#拼接*裙款式#拉链*裙款式#木耳边*裙款式#抽褶*裙款式#不规则\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18cd83087f096094",
   "metadata": {
    "collapsed": false,
    "id": "18cd83087f096094",
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "source": [
    "## 4. 总结\n",
    "到此位置，我们就完成了使用单张 GPU Lora 来微调 ChatGLM3-6B 模型，使其能生产出更好的广告。\n",
    "在本章节中，你将会学会：\n",
    "+ 如何使用模型进行 Lora 微调\n",
    "+ 微调数据集的准备和对齐\n",
    "+ 使用微调的模型进行推理"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "gpuType": "V100",
   "machine_shape": "hm",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
